The present invention relates generally to computer systems and, more particularly, to systems and techniques for displaying information to a user of a computer system.
With the advent of the personal computer, the use of computer systems is becoming increasingly prevalent in everyday life. In the past, computers were often housed in highly restricted areas, with access limited to a few computer scientists and programmers. Today, however, computers can be seen on the desktops of most business professionals. Running software applications such as word processors and spreadsheets, for example, even the average business professional can realize substantial productivity gains. Besides the business environment, computers can also be found in wide use both at home and at school.
Also in contrast to the past, the average computer user of today is usually not a computer scientist. Instead, he or she will typically have little or no formal training in the computer sciences or even in the basic use of a personal computer. Nevertheless, these untrained workers often must be proficient in the use of computers in order to compete effectively in the job market. An applicant for a legal secretary position today, for example, is expected to be proficient in the use of wordprocessing software, such as WordPerfect.TM.. As a result, there have been much interest in providing computers which are easier to use.
To increase ease of use, designers of computer systems have labored for decades to create architectures which are intuitive. Most of this effort has been centered around the user interface or UI--the means by which a user communicates (i.e., supplies input and receives output) with a computer. Not surprisingly, the quality of a user interface depends to an extent on the technology in the underlying hardware.
With increasingly widespread availability of powerful microprocessors, graphical user interfaces (GUIs, pronounced "gooeys") have become feasible. A GUI is a type of display format that enables a user to operate a computer by pointing to pictorial representations, such as "icons" (bitmaps) and "pull down" menus, displayed on a screen device. Choices are generally selected by the user with a keyboard and/or pointing device; the latter including such well-known devices as a mouse, track ball, digitizing tablet, light pen, or the like. Thus, the need for the user to memorize special commands has been lessened by the ability to operate a computer by selecting screen objects.
With well-known examples including Apple's Macintosh (Mac) interface, Microsoft's Windows, IBM's OS/2 Presentation Manager, Sun Microsystem's Open Look, and Open Software Foundation's Motif, the benefits of GUIs are tremendous. These interfaces simplify computer operation by providing users with graphical objects with which the user is already familiar. The popular "desktop metaphor" approach, for example, employs "folder" and "file cabinet" icons to simulate everyday objects. In addition to ease of use, GUIs offer consistency across applications and thus shorten a user's learning curve.
Despite all these advances, GUIs come with a rather pronounced disadvantage. In particular, GUIs are computing resource intensive, demanding both a high-resolution monitor and a fast microprocessor. The enormous demands on the hardware result from writing all those pixels to the screen, dot by dot, and redrawing (or refreshing) the screen image as the user scrolls up and down. For instance, medium-resolution Video Graphics Array (VGA) adapters display 307,200 pixels or points on the screen. One bit of information can only tell a dot to turn on or off. To encode color information, additional data bits are required (e.g., four bits for sixteen possible colors). Thus, a standard 640-by-480 pixel VGA screen operating with sixteen colors requires about 1,200,000 bits of information or about 150K.
And those requirements are modest in comparison to present-day Super VGA (SVGA) adapters, which, with its 800.times.600 pixel resolution, requires the painting of 480,000 pixels on the screen. To redraw that many individual pixels in anything approaching real time, as one would need when typing, scrolling, or drawing in application software, stretches the ability of even the fastest CPUs available for desktop computers. Thus, there has been much interest in accommodating the increased resource demands attendant with GUIs.
To date, most efforts devoted to improving performance of GUIs have focused on improving the hardware, namely the video adapters and display monitors. Of course the problem of inadequate video performance is by no means limited to GUIs. The demands for just about any graphic intensive application, whether GUI or non-GUI (e.g., AutoCAD for MS-DOS), strains the limits of present-day hardware. The extreme popularity of GUIs (especially Macintosh and Windows), however, has made the problem rather acute.
The problem of improving video performance is perhaps best described by briefly reviewing present day systems, and some of the solutions proposed to enhance performance. Most VGA and Super VGA controllers basically operate as "dumb" frame buffers, that is, they have no inherent capability to create complex images. Instead, these controllers are dependent upon the CPU of the computer to draw graphic images to screen by writing bytes into video memory (i.e., the dumb frame buffer). For drawing a line on screen, a standard controller card requires the CPU to calculate each pixel, including color information, which comprises the line. The performance in such a system is a function of how fast the CPU can read and write information to and from video memory. Because of the substantial amount of data that must be processed by the CPU and transferred across a notoriously slow system bus (typically operating at a fraction of the CPU clock rate), this approach yields poor results.
The newer generation of video boards or adapters, employing graphical "accelerators," such as the Weitek W5086, can take over management of many of the screen-redrawing processes, thereby shifting the load away from the CPU. These adapters include standard graphics functions (e.g., bitblt, line drawing, and area filling) resident on the controller itself. For drawing a line on screen, for instance, a graphics accelerator just requires the source point, destination point, line width, and color. Once given this information, the accelerator performs the rest, putting all the appropriate pixels on screen to create the correct line.
Related to accelerators are the (true) graphic coprocessors--on-board chips which are fully programmable. Coprocessors are typically based on one of the Texas Instruments 340X0 family of video coprocessors. Coprocessed boards rely on a chip that resembles the computer's CPU more than anything. Unlike accelerators, these chips do not rely on a fixed set of instructions; instead, they are programmable. Thus like accelerators, they achieve their speed increase by off-loading specific graphics operations from the host CPU.
Local bus video is another approach to improving graphics performance. Local bus video, in its simplest form, is video running at CPU speed. By taking the standard video chip set, graphics coprocessors or accelerator off the 8 to 10 megahertz I/O system bus and placing it on the motherboard (or dedicated slot) graphics data can be transferred not only in a larger quantity (32 bits instead of just 8 or 16 bits), but also at the same speed the motherboard processor is running (25, 33, or 50 megahertz, or beyond).
Despite all these advances in improving video performance, since these are hardware-based solutions, they entail hardware-based side effects, most notably incompatibilities and added expense. To achieve a competitive advantage in the marketplace, for example, many software developers write programs which directly access video hardware. As the available hardware proliferates, so does the potential for incompatibility with existing application software. Moreover, the addition of specialized circuitry increases the production cost for adapters, often on the order of hundreds of dollars. The hardware-based solutions have been, to date, far from ideal.
For the foreseeable future, there is an ongoing need for higher resolution, better performing video. Higher resolutions hold much appeal for these users. High resolution means more dots on the screen, and thus the ability to either display more information at one time, or to sharpen the image of that information (as compared with what was available with only a "course" VGA display). And with the increasing popularity of GUIs, users have increased their expectations of what is needed from a video adapter. What is needed is system and methods for improving graphics performance, particularly for systems employing GUIs, all without the need for dedicated hardware, with its attendant expense and potential incompatibilities. The present invention fulfills this and other needs.